我當初決定以 "Django 與 Strawberry GraphQL" 為主題進行鐵人賽,是希望透過此活動使自己有機會更深入了解 Strawberry 框架的運用。初衷來自於我之前使用 Python 的另一個 GraphQL 框架 Graphene 的經驗。雖然 Graphene 與 Django 的相容性相當良好,但在使用過程中,我們會發現它有一些缺點,例如重寫原始功能和將 Django 模型轉換成 GraphQL 類型都是一門學問,換句話說,它客製化的難度相對於 Strawberry 簡略的官方文件使我有了想試試這個框架的想法。
在我使用 Strawberry 的過程中發現,儘管它還不夠完善,在使用 Django 的情況下可能不適合在正式的工作中,而且其相關周邊套件也相對較少,但它提供了更佳的開發體驗,例如支援非同步開發和型態標註。
值得一提的是,儘管我已經嘗試了 Strawberry 提供的大部分 GraphQL 開發功能,但仍有很多細節需要學習和改善,比如 GraphQL 的測試撰寫、API 速率限制、Apollo Federation、自訂認證、自訂授權以及 OWASP 上提及的安全細節的處理。
此外,我之前有提到使用 Django Form 進行資料驗證的過程,事實上,Strawberry 正在支援和Pydantic 進行整合,雖然目前這還是屬於實驗性質,但若在將來成為正式支援的功能,Pydantic 將會是更符合 Strawberry 資料驗證需求的工具。